其他
79 毫秒启动一个项目,这技术杀疯了!
The following article is from 爱笑的架构师 Author 雷小帅
先祝大家节日快乐!
Spring Native
,翻译成中文叫Spring 云原生
,应该有少部分人听说过这个概念,我先带大家入门扫盲。我是谁?
Spring Native
是 Spring 推出微服务体系 Spring Cloud 之后的又一大举动,从名字可以猜出,Spring Native是一门面向云原生的技术。如果你还对这个概念不太理解,可以多看一点东西,比如 Oracle 的 GraalVM等。我有多强?
原生镜像
,简单来说原生镜像是一种将Java代码提前编译为独立可执行文件(称为本机映像)的技术。可执行文件包括应用程序类,以及其依赖项的类,运行时库类以及JDK中的静态链接本机代码。小芝士,GraalVM官网对原生镜像的解释: 原生镜像提供了一种构建和运行具有不同于常规JVM部署特性的Spring Boot应用程序的方法:
输出是一个本机可执行文件,其中包含您的应用程序以及JDK的子集以及运行它所需的依赖项。 在实践中,可执行文件可能会以高度优化的容器映像( FROM scratch
支持Docker镜像)的形式提供,并且减少了表面攻击,非常适合Kubernetes。启动时间几乎是即时的,并且可以立即获得峰值性能,从而支持从零缩放(无服务器)应用程序,包括常规的Spring Boot Web应用程序。 减少了内存消耗,这非常适合拆分为多个微服务的系统。
几乎瞬时的启动(一般会小于 100 毫秒) 瞬时的峰值性能以及更低的资源消耗
上手
环境信息
电脑:MacBook pro 13寸 2017 操作系统:macOS Big Sur 11.2 IDE:IntelliJ IDEA 2021.2.2 (Ultimate Edition) Open JDK:11.0.12 maven:3.6.3 Docker desktop:4.0.1
初始化项目
spring native spring web
注意:以上步骤也可以直接在 IDEA 里通过 start.spring.io进行新建,这里不再赘述。
运行项目
第一种:借助 maven 插件将项目构建为 docker 镜像,然后启动镜像; 第二种:借助本地构建工具将项目打包为一个可执行的文件,然后直接启动即可。
性能测试对比
结论
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>central</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
欢迎学编程的朋友们加入鱼皮的 编程导航 ,和 2 万多名编程学习者共享知识、交流进步,学习鱼皮全程直播开发的原创项目、上千篇优质编程学习求职经验分享、并获取 1 对 1 答疑指导服务。
往期推荐